package com.common.app.base

import androidx.viewbinding.ViewBinding
import com.common.app.data.bean.KeyEvents
import com.common.app.utls.ApkDownLoadUtils
import com.common.app.viewmodel.CommonViewModel
import com.common.base.app.extras.no
import com.common.base.app.extras.otherwise
import com.common.base.app.extras.yes
import com.common.base.utils.AppUtils
import com.jeremyliao.liveeventbus.LiveEventBus

/**
 *
 * 作者：sosou
 *
 * 版本：1.0
 *
 * 创建日期：26/12/2023
 *
 * 描述：带检查App版本
 *
 * 修订历史：
 *
 */
abstract class CheckAppUpActivity<VB : ViewBinding, VM : CommonViewModel> :
    AppActivity<VB, VM>() {

    private var apkDownLoadUtils: ApkDownLoadUtils? = null

    private var requestVersion = false

    override fun initEvents() {
        super.initEvents()
        LiveEventBus.get(KeyEvents.EVENT_UPDATE_APP).observe(this) {
            isActivityVisible.yes {
                requestVersion()
            }
        }
    }


    private fun requestVersion() {
        requestVersion.no {
            requestVersion = true
            mViewModel.requestVersion {
                requestVersion = false
            }.observe(this) {
                requestVersion = false
                it.isSuccess().yes {
                    it.Data?.let { it1 ->
                        //本地的versionCode小于服务端的code，执行更新逻辑
                        if (AppUtils.getVersionCode() < it1.versionCode) {
                            //强制改为强更
                            it1.forced = 2
                            if (apkDownLoadUtils == null) {
                                apkDownLoadUtils = ApkDownLoadUtils(this, it.Data)
                            }
                            apkDownLoadUtils?.showDialog(supportFragmentManager)
                        }
                    }
                }.otherwise {
                }
            }
        }
    }
}